<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="VedSc" id="VedSc"><span data-lake-id="ubae64741" id="ubae64741">典型回答</span></h1>
  <p data-lake-id="uf33c21b7" id="uf33c21b7"><br></p>
  <p data-lake-id="u811dc974" id="u811dc974"><span data-lake-id="u607cc24d" id="u607cc24d">压测是一种非常常见的帮我们做性能评估的手段。通过模拟用户请求，帮助我们发现系统的瓶颈以及评估系统的整体水位。</span></p>
  <p data-lake-id="ub2ea2cf8" id="ub2ea2cf8"><br></p>
  <p data-lake-id="u68c25563" id="u68c25563"><span data-lake-id="uedc2e14c" id="uedc2e14c">以下是进行压测的一般步骤：</span></p>
  <p data-lake-id="u714f9cc9" id="u714f9cc9"><span data-lake-id="u6e8e720b" id="u6e8e720b">​</span><br></p>
  <ol list="ub7792389">
   <li fid="u6057c2f4" data-lake-id="u5de0c7c4" id="u5de0c7c4"><span data-lake-id="u9e1458d7" id="u9e1458d7">确定测试目标：明确进行压测的目标，具体是哪个接口，那个方法，哪种具体的case。以及这次压测我们要实现什么目的，是测试300QPS能不能扛得住，还是看看系统的整体水位咋样。</span></li>
  </ol>
  <p data-lake-id="u513671ca" id="u513671ca"><br></p>
  <ol list="ub7792389" start="2">
   <li fid="u6057c2f4" data-lake-id="ucf9552ef" id="ucf9552ef"><span data-lake-id="uf1c7f8d8" id="uf1c7f8d8">制定压测计划：确定压测的具体策略，包括测试的时间、持续多久、并发量要压到多少、是一次性压到指标还是脉冲式压上去、测试环境配置等。</span></li>
  </ol>
  <p data-lake-id="u9d51eed3" id="u9d51eed3"><br></p>
  <ol list="ub7792389" start="3">
   <li fid="u6057c2f4" data-lake-id="ude0929d1" id="ude0929d1"><span data-lake-id="u2c541771" id="u2c541771">创建环境并准备脚本：压测可以在测试环境也可以在生产环境，但是不管是硬件配置、部署架构还是代码，都需要和线上环境尽量保持一致。并且需要准备好压测数据及脚本，是不同的用户，还是相同的用户，是写数据还是读数据。都是不一样的。</span></li>
  </ol>
  <p data-lake-id="u1bdb457c" id="u1bdb457c"><br></p>
  <ol list="ub7792389" start="4">
   <li fid="u6057c2f4" data-lake-id="u48fbd8d2" id="u48fbd8d2"><span data-lake-id="ucc45c90b" id="ucc45c90b">执行压测</span><span data-lake-id="u45a29d5c" id="u45a29d5c">：根据测试计划，执行压测并收集性能指标。可以逐步增加负载，观察系统的响应情况。</span></li>
  </ol>
  <p data-lake-id="u92001be3" id="u92001be3"><br></p>
  <ol list="ub7792389" start="5">
   <li fid="u6057c2f4" data-lake-id="u8e293a06" id="u8e293a06"><strong><span data-lake-id="u3dd6a2f1" id="u3dd6a2f1">监控系统性能</span></strong><span data-lake-id="u9392dbc0" id="u9392dbc0">：施压不是目的，目的是在施压过程中，观察系统的整体情况。包括但不限于：</span></li>
  </ol>
  <ol list="ub7792389" data-lake-indent="1">
   <li fid="u6057c2f4" data-lake-id="u1e062eff" id="u1e062eff"><strong><span data-lake-id="uf1704f4b" id="uf1704f4b">RT、CPU利用率、Load、内存情况、GC次数、GC时长、网络IO情况、堆内存情况、线上报警情况等。</span></strong></li>
  </ol>
  <p data-lake-id="u9ea52347" id="u9ea52347"><br></p>
  <ol list="ub7792389" start="6">
   <li fid="u6057c2f4" data-lake-id="u6b69e1c8" id="u6b69e1c8"><span data-lake-id="u2bbdf3d8" id="u2bbdf3d8">分析结果</span><span data-lake-id="u6b8427a7" id="u6b8427a7">：对压测结果进行分析，确定系统的性能瓶颈和潜在问题，并采取相应的优化措施。</span></li>
  </ol>
  <p data-lake-id="u36678cb4" id="u36678cb4"><br></p>
  <ol list="ub7792389" start="7">
   <li fid="u6057c2f4" data-lake-id="u71f79c80" id="u71f79c80"><span data-lake-id="u8897e693" id="u8897e693">优化和再测试</span><span data-lake-id="u3b1ae752" id="u3b1ae752">：根据分析结果，进行必要的优化和改进，并重新进行压测，直到系统能够满足预期的性能要求。</span></li>
  </ol>
  <p data-lake-id="uad32ee6a" id="uad32ee6a"><br></p>
  <p data-lake-id="u19d78942" id="u19d78942"><span data-lake-id="u887bea24" id="u887bea24">常用的压测工具包括JMeter、Apache Bench等，它们可以帮助自动化执行压测脚本，并提供详细的测试报告和性能分析。在进行压测时，需要特别注意对生产环境的影响，确保不会对实际用户造成不良影响。因此，在压测前务必仔细准备，并充分评估风险。</span></p>
  <p data-lake-id="u2343b619" id="u2343b619"><span data-lake-id="u5f484792" id="u5f484792">​</span><br></p>
  <h1 data-lake-id="wrkOV" id="wrkOV"><span data-lake-id="u907fe559" id="u907fe559">扩展知识</span></h1>
  <p data-lake-id="u8778d47a" id="u8778d47a"><br></p>
  <h2 data-lake-id="uidYs" id="uidYs"><span data-lake-id="u1738284f" id="u1738284f">JMeter</span></h2>
  <p data-lake-id="ubdeecedd" id="ubdeecedd"><br></p>
  <p data-lake-id="u5e5fb079" id="u5e5fb079"><span data-lake-id="u7ea08ad8" id="u7ea08ad8">JMeter是一个功能强大的开源性能测试工具，由Apache软件基金会开发和维护。它主要用于进行压力测试、负载测试和性能测试，以评估Web应用程序、Web服务、数据库和其他类型的服务在不同负载条件下的性能。</span></p>
  <p data-lake-id="u5e85ce7d" id="u5e85ce7d"><span data-lake-id="ud911b764" id="ud911b764">​</span><br></p>
  <p data-lake-id="ue17adab7" id="ue17adab7"><span data-lake-id="udca84c1a" id="udca84c1a">jmeter官网：</span><a href="https://jmeter.apache.org/" target="_blank" data-lake-id="u01deeee6" id="u01deeee6"><span data-lake-id="u9f635744" id="u9f635744">https://jmeter.apache.org/</span></a></p>
  <p data-lake-id="u4753eead" id="u4753eead"><br></p>
  <p data-lake-id="u84f48586" id="u84f48586"><span data-lake-id="u6c9704b8" id="u6c9704b8">给大大家推荐一篇我同事写的jemer实践经验：</span><a href="https://www.talkwithtrend.com/Article/245389" target="_blank" data-lake-id="uc46b7f5c" id="uc46b7f5c"><span data-lake-id="uad5cd304" id="uad5cd304">https://www.talkwithtrend.com/Article/245389</span></a><span data-lake-id="u1d26f556" id="u1d26f556"> ，想要了解这个工具怎么用的，可以看下这篇文章。</span></p>
  <p data-lake-id="u672f5d71" id="u672f5d71"><span data-lake-id="u529fc731" id="u529fc731">​</span><br></p>
  <p data-lake-id="u06ad06c4" id="u06ad06c4"><span data-lake-id="uadf3b883" id="uadf3b883">总之，这个是目前比较主流的压测工具。</span></p>
  <p data-lake-id="ud5603117" id="ud5603117"><br></p>
  <h2 data-lake-id="ZBPRt" id="ZBPRt"><span data-lake-id="u6a5fcd7a" id="u6a5fcd7a">全链路压测</span></h2>
  <p data-lake-id="u1c26f1b0" id="u1c26f1b0"><br></p>
 </body>
</html>